package Test;

//泛型
class MyArray<E>{
    public Object[] array=new Object[10];

    public void setVal(int pos,int val){
        array[pos]=val;
    }

    public E getVal(int pos){
        return (E)array[pos];
    }
}

//sealed修饰Animal代表当前类是密封类 必须有子类
sealed class Animal permits PetDog2,Dog{

}

non-sealed class PetDog2 extends Animal {

}

//Dog 这个类  没有限制 可以被任何类继承
non-sealed class Dog extends Animal {

}
class PetDog extends Dog {

}

public class Test {
    public static void main1(String[] args) {
        MyArray<Integer> myArray=new MyArray<Integer>();
        myArray.setVal(0,9);
        myArray.setVal(1,2);
        System.out.println(myArray.getVal(1));
    }

    //yield的使用和case一样
    public static void main2(String[] args) {
        String data="one";
        int result=0;//接收数据的返回值
        switch (data){
            case "one":
                result=1;//为result重新赋值
                break;
            case "two":
                result=2;//为result重新赋值
                break;
            default:
                result=-1;//为result重新赋值
                break;
        }
        System.out.println(result);
    }

    //->的用法
    public static void main3(String[] args) {
        String data="one";
        int result=switch (data){
            case "one"->1;
            case "two"->2;
            default -> -1;
        };
        System.out.println(result);
    }

    //yield的用法     :yield和->一样
    public static void main(String[] args) {
        String data="one";
        int result=switch (data){
            case "one":yield 1;
            case "two":yield 2;
            default:yield  -1;
        };
        System.out.println(result);
    }
}